<!--
 * @Author: JPeng 872639397@qq.com
 * @Date: 2022-05-11 10:40:52
 * @LastEditors: JPeng 872639397@qq.com
 * @LastEditTime: 2022-05-22 10:48:52
 * @FilePath: \算法测试\复习！！！\Promise\01.基本.html
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <button class="a">Promise</button>
    <script>
        let a = document.getElementsByClassName("a")[0];
        a.onclick = function name(params) {
            const p = new Promise((resolve, rejected) => {
                let num = Math.random();
                if (num >= 0.5) {
                    //throw "123" //会阻塞这里的代码执行 89999不会执行 相当于rejected 状态
                    resolve(new Error("hhhhhh"));//也是成功
                    console.log(89999);
                    // throw "123" //碰到异常 如果此时状态已经改变 那无效 相当于rejected
                } else {
                    rejected(num);
                }
            });
            // let result = p.then((data) => {
            //     alert("成功咯，值是" + data)
            // }, (err) => {
            //     console.log("失败咯，穿透中止");//此时失败 没有被穿透捕获 继续.then
            // }).then((data) => {
            //     console.log("又成功了");
            // }).catch(() => { //前面    没有指定rejected回调   的情况下 有一处rejected那么  执行这里 
            //                 //如果前面    有指定rejected回调       那么中间失败也          不会进入这里
            //     console.log("异常穿透");
            // })
            // console.log(result);

            let result = p.then((data) => {
                alert("成功咯，值是" + data)
            }).then((data) => {
                console.log("又成功了" + data);
            }).catch((err) => { // 如果前面没有rejected回调 也没有catch 那么失败会报错 因为无法处理失败状态
                console.log("异常穿透" + err);
            })
            console.log(result);
            // throw "7890"; // 会阻塞代码执行
            console.log("吃饭了吗");
        }


    </script>
</body>

</html>